package com.example.demo.scheduled;

import com.example.demo.mq.producer.RabbitProducer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.time.LocalDateTime;

/**
 * 定时任务有三种创建方式，本类是第一种
 * 一、基于注解(@Scheduled)
 * 二、基于接口（SchedulingConfigurer） 前者相信大家都很熟悉，但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务，这时候基于接口的定时任务就派上用场了。
 * 三、基于注解设定多线程定时任务
 */
@Configuration      //1.主要用于标记配置类，兼备Component的效果。
/*@EnableScheduling */  // 2.开启定时任务
public class ScheduledTask {
    //@Autowired
    private RabbitProducer rabbitProducer;

    //3.添加定时任务
    @Scheduled(cron = "0/5 * * * * ?")
    //或直接指定时间间隔，例如：5秒
    //@Scheduled(fixedRate=5000)
    private void configureTasks() {
        System.err.println("" +
                "执行静态定时任务时间: " + LocalDateTime.now());

        System.out.println("向队列发送消息...");
        //rabbitProducer.sendDemoQueue(LocalDateTime.now().toString());
    }
}
